﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ZPod.MTG.Communication
{
	public abstract class BaseClient : IClient
	{
		#region IClient Members

		/// <summary>
		/// <see cref="IClient.PlayerName"/>
		/// </summary>
		public virtual string PlayerName
		{
			get;
			set;
		}

		/// <summary>
		/// <see cref="IClient.ConnectionString"/>
		/// </summary>
		public virtual string ConnectionString
		{
			get;
			set;
		}

		/// <summary>
		/// <see cref="IClient.PlayerName"/>
		/// </summary>
		public abstract List<string> AvailableGames
		{
			get;
		}

		/// <summary>
		/// <see cref="IClient.CurrentState"/>
		/// </summary>
		public abstract GameState CurrentState
		{
			get;
		}

		/// <summary>
		/// <see cref="IClient.CurrentGame"/>
		/// </summary>
		public string CurrentGame
		{
			get;
			set;
		}

		/// <summary>
		/// <see cref="IClient.CreateGame"/>
		/// </summary>
		public abstract void CreateGame(string name);

		/// <summary>
		/// <see cref="IClient.SetPlayerState"/>
		/// </summary>
		public abstract void SetPlayerState(PlayerState state);

		/// <summary>
		/// <see cref="IClient.Connect"/>
		/// </summary>
		public abstract void Connect();

		/// <summary>
		/// <see cref="IClient.Disconnect"/>
		/// </summary>
		public abstract void Disconnect();

		/// <summary>
		/// <see cref="IClient.AddCommonCard"/>
		/// </summary>
		public abstract void AddCommonCard(Card card);

		/// <summary>
		/// <see cref="IClient.RemoveCommonCard"/>
		/// </summary>
		public abstract void RemoveCommonCard(int index);

		public abstract void Dispose();

		#endregion
	}
}
